package interview.huawei.tjt.training.shuzu;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 给定一个正整数 n，生成一个包含 1 到 $n^2$ 所有元素，且元素按顺时针顺序螺旋排列的正方形矩阵。
 *
 * 示例:
 *
 * 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
 */
public class GenerateMatrix2 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[][] result = new int[n][n];

        // 循环次数
        int loop = n/2;

        // 定义每次循环的起始位置
        int startX = 0;
        int startY = 0;

        // 定义偏移量
        int offset = 1;

        // 定义填充数字
        int count = 1;

        // 定义中间位置
        int mid = n/2;

        while (loop > 0) {
            int i = startX;
            int j = startY;

            // 从左至右
            for (; j < startX + n - offset; j ++) {
                result[i][j] = count;
                count ++;
            }

            // 从上到下
            for (; i < startY + n - offset; i ++) {
                result[i][j] = count;
                count ++;
            }

            // 从右到左
            for (; j > startX; j --) {
                result[i][j] = count;
                count ++;
            }

            // 从下到上
            for (; i > startY; i --) {
                result[i][j] = count;
                count ++;
            }

            startX ++;
            startY ++;

            loop --;

            offset += 2;
        }

        if (n % 2 == 1) {
            result[mid][mid] = count;
        }

        for (int i = 0; i < n; i ++)
        System.out.println(Arrays.toString(result[i]));
    }

}
